dojo.provide("dojot.util.PageList_widget");
dojo.experimental("dojot.util.PageList_widget");

//dojo.require("dojot.util.PageInfo");
dojo.require("dijit._Widget");
dojo.require("dojox.dtl._DomTemplated");
dojo.declare("dojot.util.PageList_widget",[dijit._Widget, dojox.dtl._DomTemplated],{
        widgetsInTemplate: false,
        //分页信息的主要数据结构
	pageInfo:null,
        //具体的页面数据。这个估计
	items:null,
        //是否显示下一页。在页面用于判断
	next:false,
        //是否显示上一页。在页面用于判断
	prev:false,

        //是否是内存分页
	isMemoryPage:false,
        //主要是用来构造分页索引列表。
	listPageIndex:[],
        //分页数据仓库
	pageDataStore:null,
        
        //请求时候的分页参数
        pageParam:null,
        
        templatePath:dojo.moduleUrl("dojot.util", "resources/pageInfo_widget.html"),
        
        postCreate:function(){
            //初始化pageInfo对象
            this.initPageInfo();
        },
        initPageInfo:function(req){
            //重新初始化pageInfo
            this.pageInfo = new dojot.util.PageInfo(this.pageParam);
            //如果在初始化的时候指定显示那一页的话，可以在req里面指定这个参数。
            console.log(this.pageParam);
            this._showIndex(this.pageParam.currentPage);
        },
        showNext:function(evt){
            var currentIndex = this.pageInfo.getCurrentPage();
            this._showIndex(++currentIndex);
        },
        showPrev:function(evt){
            var currentIndex = this.pageInfo.getCurrentPage();
            this._showIndex(--currentIndex);
        },
        showByIndex:function(evt){
            var index = dojo.attr(evt.target,"title");
            index = parseInt(index) || 1;
            this._showIndex(index);
        },
        _showIndex: function(currentPage){
            //根据要显示页面的索引，去显示相应的页面
            this.pageInfo.setCurrentPage(currentPage);
            this._setPage();
	},
	_setPage:function(){
            this.items = this.pageInfo.getCurrentItems();
            this._initTurnPageInfo();
	},
	_initTurnPageInfo: function(){
            //计算所有的分页信息。
            this.next = this._isShowNext();
            this.prev = this._isShowPrev();
           
            this.endIndex = this.pageInfo.currentPage-1;
            //初始化页码导航条中列出的页数 的数组，方便在模板里面显示使用
            this.listPageIndex = [];
            for(var start=this._getListPageStart(),end=this._getListPageEnd();start<=end;start++){
                this.listPageIndex.push(start);
            }
            //渲染分页
            console.log("publis---->"+(this.widgetId || this.id)+'_showPage');
            dojo.publish((this.widgetId || this.id)+'_showPage',[this.items,"haha"]);
            this.render();
	},
	_isShowNext:function(){
            return this.pageInfo.currentPage < this.pageInfo.pageCount;
	},
	_isShowPrev:function(){
            return this.pageInfo.currentPage > 1;
	},
	
        _getListPageStart: function(){
	    return this.pageInfo.getListPageStart();
	},
	_getListPageEnd: function(){
	    return this.pageInfo.getListPageEnd();
	}
})